home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / graphics / font.zip / FONT.INC next >
Text File  |  1994-08-09  |  40KB  |  1,375 lines

  1. /*
  2.      font.inc v1.0 - 3D geometries of letters, numbers, and special 
  3.                      characters.  Better (I think) than what comes 
  4.                      with POVRay.
  5.      
  6.      Converted from Rayshade to POVRay by 
  7.      
  8.      Michael Hartman
  9.      hartmms@eng.auburn.edu 
  10.      http://www.eng.auburn.edu/~hartmms/home.html
  11.      Auburn University
  12.      
  13.      I bounded all characters by a box to speed rendering, since
  14.      the letters include a lot of objects. I added a couple of items 
  15.      as well.
  16.  
  17.      If you have any hints or additions, feel free to add them, but 
  18.      let me know since I'm keeping an updated version of this file.
  19.      
  20.      credits from rayshade file.... 
  21.      (     Based on upper case letters created by somebody.  (Sorry, but   )
  22.      (     I can't remember who first posted this)  I hope that someone    )
  23.      (     will see this and add his/her name to this header.              )
  24.      (                                                                     )
  25.      (     Lower case letters, numbers, special characters, and small      )
  26.      (     changes to upper case letters by Dan Peisach and Eric Fontano,  )
  27.      (     Rosenstiel Medical Science Center, Brandeis University.         )
  28. */
  29.  
  30. /* 
  31.      All characters have the origion at the bottom left corner.
  32.      You can change the following declare statements to suit your needs. 
  33. */
  34.  
  35. #declare THICK=0.1           // Thickness of letters, 0.25 is nice too.
  36. #declare BOUND=THICK+0.1     // Changes BOUNDing box size if thicker letters.
  37. #declare RATIO=0.7           // DO NOT SET BELOW 0.6. 
  38. #declare ARATIO=(1-RATIO)    // Used for lower case letters.
  39. #declare GAP=(1-2*(1-RATIO)) // Used for lower case letters.
  40. #declare HEIGHT=2.0          /* Height (not including lower 
  41.                                 extensions) of chars. */
  42.  
  43.  
  44. /* common character parts */
  45.  
  46. #declare toparc=
  47.     object  {
  48.     torus  { 0.5, THICK translate <0.5,0,1.5> }
  49.     clipped_by { box  { <-1,-1,1.5> <2, 1, 3>  } }
  50. }
  51.  
  52. #declare botarc=
  53.      object {
  54.      torus {  0.5, THICK translate <0.5, 0, 0.5> }
  55.      clipped_by { box  { <-1, -1, -1> <2, 1, 0.5> } }
  56. }
  57.  
  58. #declare upperquarter=
  59. object {
  60.      torus {  0.5, THICK translate <0.5, 0, 1.5> }
  61.      clipped_by { box  { <0.5, -1, 1.5> <2, 1, 3> } }
  62. }
  63.  
  64. #declare upperleftquarter=
  65. object {
  66.      torus { 0.5,THICK  translate <0.5, 0, 1.5> }
  67.      clipped_by  { box  { <0.5,-1,1.5> <-2,1,3> } }
  68. }
  69.  
  70. #declare upperarc=
  71. object {
  72.      torus  { 0.5,THICK  translate <0.5,0,1.5> }
  73.      clipped_by  { box  { <0.5, -1, 0>  <2, 1, 3> } }
  74. }
  75.  
  76. #declare lowerquarter=
  77. object {
  78.      torus { 0.5, THICK translate <0.5, 0, 0.5> }
  79.      clipped_by  { box  { <0.5, -1, -1>  <2, 1, 0.5> } }
  80. }
  81.  
  82. #declare lowerleftquarter=
  83.      object {
  84.      torus { 0.5, THICK translate <0.5, 0, 0.5> }
  85.      clipped_by { box { <-1, -1, -1>  <0.5, 1, 0.5>  } }
  86. }
  87.  
  88. #declare lowerarc=
  89. object {
  90.      torus { 0.5,THICK translate <0.5, 0, 0.5> }
  91.      clipped_by  { box  { <0.5, -1, -1> <2, 1, 2> } }
  92. }
  93.  
  94. #declare corner=
  95. object {
  96.      torus { THICK,THICK  }
  97.      clipped_by  { box  { <0, -1, 0> <1, 1, 1> } }
  98. }
  99.  
  100. #declare upperleft=   
  101. object { 
  102.      corner                        
  103.      rotate <0,-90,0> translate <THICK, 0, (2-THICK)> 
  104. }
  105.  
  106. #declare lowerleft=   
  107. object {
  108.      corner                    
  109.      rotate <0,180,0> translate <THICK, 0, THICK>
  110. }
  111.  
  112.  
  113. /* Capital letter declarations */
  114.  
  115. #declare font_A=
  116. union {
  117.      cylinder { <0, 0, 0> <0.5, 0, 2>, THICK }
  118.      cylinder { <1, 0, 0> <0.5, 0, 2>, THICK }
  119.      cylinder { <(0.5-0.5*0.5), 0, 0.7> <(0.5+0.5*0.5), 0, 0.7>, THICK }
  120.      sphere {   <0.5, 0, 2>, THICK }
  121.      sphere {   <0, 0, 0>, THICK }
  122.      sphere {   <1, 0, 0>, THICK }
  123.      bounded_by { 
  124.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  125.      }
  126.  
  127. }
  128.  
  129. #declare font_B=
  130. union {
  131.      cylinder {  <0, 0, 0> <0, 0, 2>, THICK }
  132.      cylinder {  <0, 0, 2> <0.5, 0, 2>, THICK }
  133.      cylinder {  <0, 0, 1> <0.5, 0, 1>, THICK }
  134.      cylinder {  <0, 0, 0> <0.5, 0, 0>, THICK }
  135.      object { upperarc }
  136.      object { lowerarc }
  137.      sphere {  <0, 0, 0>, THICK }
  138.      sphere {  <0, 0, 2>, THICK }
  139.      bounded_by { 
  140.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  141.      }
  142.  
  143.      
  144. }
  145.  
  146. #declare font_C=
  147. union {
  148.      object { toparc }
  149.      cylinder {  <0, 0, 0.5> <0, 0, 1.5>, THICK }
  150.      object { botarc }
  151.      sphere { <1, 0, 1.5>, THICK }
  152.      sphere { <1, 0, 0.5>, THICK }
  153.      bounded_by { 
  154.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  155.      }
  156. }
  157.  
  158. #declare font_D=
  159. union {
  160.      cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  161.      cylinder { <0, 0, 2> <0.5, 0, 2>, THICK }
  162.      cylinder { <1, 0, 0.5> <1, 0, 1.5>, THICK }
  163.      cylinder { <0, 0, 0> <0.5, 0, 0>, THICK }
  164.      object { upperquarter }
  165.      object { lowerquarter }
  166.      sphere { <0, 0, 0>, THICK }
  167.      sphere { <0, 0, 2>, THICK }
  168.      bounded_by {
  169.           box { <-BOUND, -BOUND, -BOUND> <1+THICK, BOUND, 2+THICK> }
  170.      }
  171. }
  172.  
  173. #declare font_E=
  174. union {
  175.      cylinder {  <0, 0, 0> <0, 0, 2>, THICK }
  176.      cylinder {  <0, 0, 0> <1, 0, 0>, THICK }
  177.      cylinder {  <0, 0, 2> <1, 0, 2>, THICK }
  178.      cylinder {  <0, 0, 1> <0.75, 0, 1>, THICK }
  179.      sphere { <0, 0, 0>, THICK }
  180.      sphere { <0, 0, 2>, THICK }
  181.      sphere { <1, 0, 0>, THICK }
  182.      sphere { <1, 0, 2>, THICK }
  183.      sphere { <0.75, 0, 1>, THICK }
  184.      bounded_by { 
  185.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  186.      }
  187.  
  188. }
  189.  
  190. #declare font_F=
  191. union {
  192.      cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  193.      cylinder { <0, 0, 2> <1, 0, 2>, THICK }
  194.      cylinder { <0, 0, 1> <0.75, 0, 1>, THICK }
  195.      sphere { <0, 0, 0>, THICK }    
  196.      sphere { <0, 0, 2>, THICK }
  197.      sphere { <1, 0, 2>, THICK }
  198.      sphere { <0.75, 0, 1>, THICK }
  199.      bounded_by { 
  200.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  201.      }
  202.  
  203. }
  204.  
  205. #declare font_G=
  206. union {
  207.      object { toparc }
  208.      cylinder { <0, 0, 0.5> <0, 0, 1.5>, THICK }
  209.      object { botarc }
  210.      cylinder { <1, 0, 0.8> <1, 0, 0.5>, THICK }
  211.      sphere { <1, 0, 1.5>, THICK }
  212.      cylinder { <0.6, 0, 0.8> <1, 0, 0.8>, THICK }
  213.      sphere { <1, 0, 0.8>, THICK }
  214.      sphere { <0.6, 0, 0.8>, THICK }
  215.      bounded_by { 
  216.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  217.      }
  218.  
  219. }
  220.  
  221. #declare font_H=
  222. union {
  223.      union {                                      
  224.           cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  225.           sphere { <0, 0, 0>, THICK }
  226.           sphere { <0, 0, 2>, THICK }             
  227.           translate <0, 0, 0>
  228.      }
  229.      union {                                      
  230.           cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  231.           sphere { <0, 0, 0>, THICK }
  232.           sphere { <0, 0, 2>, THICK }             
  233.           translate <1, 0, 0>
  234.      }
  235.      cylinder {  <0, 0, 1> <1, 0, 1>, THICK }
  236.      bounded_by { 
  237.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  238.      }
  239.  
  240. }
  241.  
  242.  
  243. #declare font_I=
  244. union {
  245.      cylinder { <0.5, 0, 0> <0.5, 0, 2>, THICK }
  246.      cylinder { <0, 0, 0>   <1, 0, 0>, THICK } 
  247.      cylinder { <0, 0, 2>   <1, 0, 2>, THICK }
  248.      sphere { <0, 0, 0>, THICK }
  249.      sphere { <1, 0, 0>, THICK } 
  250.      sphere { <0, 0, 2>, THICK }
  251.      sphere { <1, 0, 2>, THICK }
  252.      bounded_by { 
  253.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  254.      }
  255.  
  256. }
  257.  
  258. #declare font_J=
  259. union {
  260.  
  261.      union {     
  262.           cylinder { <0, 0, 0> <0, 0, 1.5>, THICK }
  263.           sphere {  <0, 0, 0>, THICK }                       
  264.           rotate <0,180,0> 
  265.           translate <1, 0, 2> 
  266.      }
  267.      object { botarc }
  268.      sphere { <0, 0, 0.5>, THICK }
  269.      bounded_by { 
  270.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  271.      }
  272. }
  273.  
  274. #declare font_K=
  275. union {
  276.      cylinder { <0, 0, 0> <0, 0, 2>, THICK } 
  277.      cylinder { <1, 0, 2> <0, 0, 1>, THICK }
  278.      cylinder { <1, 0, 0> <0.5, 0, 1.5>, THICK }
  279.      sphere { <0, 0, 0>, THICK }
  280.      sphere { <0, 0, 2>, THICK }
  281.      sphere { <1, 0, 2>, THICK }
  282.      sphere { <1, 0, 0>, THICK }
  283.      bounded_by { 
  284.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  285.      }
  286.  
  287. }
  288.  
  289. #declare font_L=
  290. union {
  291.      cylinder {  <0, 0, 0> <0, 0, 2>, THICK }
  292.      cylinder {  <0, 0, 0> <1, 0, 0>, THICK }
  293.      sphere { <0, 0, 0>, THICK }
  294.      sphere { <0, 0, 2>, THICK } 
  295.      sphere { <1, 0, 0>, THICK }
  296.      bounded_by { 
  297.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  298.      }
  299.  
  300. }
  301.  
  302. #declare font_M=
  303. union {
  304.      union {                                      
  305.           cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  306.           sphere { <0, 0, 0>, THICK }
  307.           sphere { <0, 0, 2>, THICK }             
  308.      }
  309.      union {                                      
  310.           cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  311.           sphere { <0, 0, 0>, THICK }
  312.           sphere { <0, 0, 2>, THICK }             
  313.           translate <1, 0, 0>
  314.      }
  315.      cylinder { <0, 0, 2> <0.5, 0, 1>, THICK } 
  316.      cylinder { <1, 0, 2> <0.5, 0, 1>, THICK }
  317.      sphere { <0.5, 0, 1>, THICK }
  318.      bounded_by { 
  319.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  320.      }
  321.  
  322. }
  323.  
  324. #declare font_N=
  325. union {
  326.      union {                                      
  327.           cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  328.           sphere { <0, 0, 0>, THICK }
  329.           sphere { <0, 0, 2>, THICK }             
  330.      }
  331.      union {                                      
  332.           cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  333.           sphere { <0, 0, 0>, THICK }
  334.           sphere { <0, 0, 2>, THICK }             
  335.           translate <1, 0, 0> 
  336.      }
  337.      cylinder { <0, 0, 2> <1, 0, 0>, THICK }
  338.      bounded_by { 
  339.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  340.      }
  341.  
  342. }
  343.  
  344. #declare font_O=
  345. union {
  346.      object { toparc }
  347.      cylinder { <0, 0, 0.5> <0, 0, 1.5>, THICK } 
  348.      object { botarc }
  349.      cylinder { <1, 0, 0.5> <1, 0, 1.5>, THICK } 
  350.      bounded_by { 
  351.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  352.      }
  353.  
  354. }
  355.  
  356. #declare font_P=
  357. union {
  358.      cylinder {  <0, 0, 0> <0, 0, 2>, THICK } 
  359.      cylinder {  <0, 0, 2> <0.5, 0, 2>, THICK }
  360.      cylinder {  <0, 0, 1> <0.5, 0, 1>, THICK }
  361.      object { upperarc }
  362.      sphere { <0, 0, 0>, THICK } 
  363.      sphere { <0, 0, 2>, THICK }
  364.      bounded_by { 
  365.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  366.      }
  367.  
  368. }
  369.  
  370. #declare font_Q=
  371. union {
  372.      object { toparc }
  373.      cylinder { <0, 0, 0.5> <0, 0, 1.5>, THICK }
  374.      object { botarc }
  375.      cylinder { <1, 0, 0.5> <1, 0, 1.5>, THICK }
  376.      cylinder { <1, 0, 0> <0.6, 0, 0.8>, THICK }
  377.      sphere { <1, 0, 0>, THICK }
  378.      sphere { <0.6, 0 ,0.8>, THICK }
  379.      bounded_by { 
  380.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  381.      }
  382.  
  383. }
  384.  
  385. #declare font_R=
  386. union {
  387.      cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  388.      cylinder { <0, 0, 2> <0.5, 0, 2>, THICK }
  389.      cylinder { <0, 0, 1> <0.5, 0, 1>, THICK }
  390.      object { upperarc }
  391.      sphere { <0, 0, 0>, THICK }
  392.      sphere { <0, 0, 2>, THICK }
  393.      object { upperarc }
  394.      object { upperquarter translate <0, 0, -1> }
  395.      union {     
  396.           cylinder { <0, 0, 0> <0, 0, 0.5>, THICK }
  397.           sphere {  <0, 0, 0>, THICK }                       
  398.           translate <1, 0, 0> 
  399.      }
  400.      bounded_by { 
  401.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  402.      }
  403.  
  404. }
  405.  
  406. #declare font_S=
  407. union {
  408.      sphere { <1, 0, 1.5>, THICK }
  409.      object { toparc }
  410.      object { lowerleftquarter  translate <0, 0, 1> }
  411.      object { upperquarter translate <0, 0, -1> }
  412.      object { botarc }
  413.      sphere { <0, 0, 0.5>, THICK }
  414.      bounded_by { 
  415.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  416.      }
  417.  
  418. }
  419.  
  420. #declare font_T=
  421. union {
  422.      union {     
  423.           cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  424.           sphere {  <0, 0, 0>, THICK }                       
  425.           translate <0.5, 0, 0> 
  426.      }
  427.      union {                                      
  428.           cylinder { <0, 0, 0> <0, 0, 1>, THICK }
  429.           sphere { <0, 0, 0>, THICK }
  430.           sphere { <0, 0, 1>, THICK }             
  431.           rotate <0,90,0> 
  432.           translate <0, 0, 2> 
  433.      }
  434.      bounded_by { 
  435.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  436.      }
  437.  
  438. }
  439.  
  440. #declare font_U=
  441. union {
  442.      cylinder { <0, 0, 0.5> <0, 0, 2>, THICK } 
  443.      object { botarc }
  444.      cylinder { <1, 0, 0.5> <1, 0, 2>, THICK }
  445.      sphere { <0, 0, 2>, THICK }
  446.      sphere { <1, 0, 2>, THICK }
  447. }
  448.  
  449. #declare font_V=
  450. union {
  451.      cylinder { <0.5, 0, 0> <0, 0, 2>, THICK }
  452.      cylinder { <0.5, 0, 0> <1, 0, 2>, THICK }
  453.      sphere { <0, 0, 2>, THICK }
  454.      sphere { <1, 0, 2>, THICK }
  455.      sphere { <0.5, 0, 0>, THICK }
  456.      bounded_by { 
  457.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  458.      }
  459.  
  460. }
  461.  
  462. #declare font_W=
  463. union {
  464.      sphere { <0, 0, 2>, THICK }
  465.      cylinder { <0, 0, 2> <0.15, 0, 0>, THICK } 
  466.      sphere { <0.15, 0, 0>, THICK }
  467.      cylinder { <0.15, 0, 0> <0.5, 0, 1>, THICK }
  468.      sphere { <0.5, 0, 1>, THICK }
  469.      cylinder { <.85, 0, 0> <0.5, 0, 1>, THICK }
  470.      sphere { <.85, 0, 0>, THICK } 
  471.      cylinder { <.85, 0, 0> <1, 0, 2>, THICK }
  472.      sphere { <1, 0, 2>, THICK }
  473.      bounded_by { 
  474.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  475.      }
  476.  
  477. }
  478.  
  479. #declare font_X=
  480. union {
  481.      cylinder { <1, 0, 0> <0, 0, 2>, THICK }
  482.      cylinder { <0, 0, 0> <1, 0, 2>, THICK }
  483.      sphere { <0, 0, 2>, THICK }
  484.      sphere { <1, 0, 2>, THICK }
  485.      sphere { <1, 0, 0>, THICK }
  486.      sphere { <0, 0, 0>, THICK }
  487.      bounded_by { 
  488.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  489.      }
  490.  
  491. }
  492.  
  493. #declare font_Y=
  494. union {
  495.      cylinder { <0, 0, 2> <0.5, 0, 1>, THICK }
  496.      cylinder { <1, 0, 2> <0.5, 0, 1>, THICK } 
  497.      sphere { <0, 0, 2>, THICK }
  498.      sphere { <1, 0, 2>, THICK }
  499.  
  500.      union {                                      
  501.           cylinder { <0, 0, 0> <0, 0, 1>, THICK }
  502.           sphere { <0, 0, 0>, THICK }
  503.           sphere { <0, 0, 1>, THICK }             
  504.           translate <0.5, 0, 0> 
  505.      }
  506.      bounded_by { 
  507.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  508.      }
  509.  
  510. }
  511.  
  512. #declare font_Z=
  513. union {
  514.      cylinder { <0, 0, 2> <1, 0, 2>, THICK }
  515.      cylinder { <0, 0, 0> <1, 0, 2>, THICK }
  516.      cylinder { <0, 0, 0> <1, 0, 0>, THICK }
  517.      sphere { <0, 0, 2>, THICK }
  518.      sphere { <1, 0, 2>, THICK }
  519.      sphere { <1, 0, 0>, THICK }
  520.      sphere { <0, 0, 0>, THICK }
  521.      bounded_by { 
  522.        box {  <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND,2+THICK> } 
  523.      }
  524.  
  525. }
  526.  
  527.  
  528. /* Lower case letter definitions */ 
  529.  
  530.  
  531. #declare  font_a=
  532. union { 
  533.      object { toparc  translate <0, 0, (-2*ARATIO)> }
  534.      object { botarc }
  535.      cylinder { <0, 0, 0.5> <0, 0, (0.5+GAP)>, THICK }
  536.      union {                                      
  537.           cylinder { <0, 0, 0> <0, 0, 2*RATIO>, THICK }
  538.           sphere { <0, 0, 0>, THICK }
  539.           sphere { <0, 0, 2*RATIO>, THICK }             
  540.           translate <1, 0, 0>  
  541.      }
  542.      bounded_by {
  543.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  544.      }
  545.  
  546. }
  547.  
  548. #declare  font_b=
  549. union { 
  550.      object { toparc  translate <0, 0, (-2*ARATIO)> }
  551.      object { botarc }
  552.      cylinder { <1, 0, 0.5> <1, 0, (0.5+GAP)>, THICK  }
  553.      union {                                      
  554.           cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  555.           sphere { <0, 0, 0>, THICK }
  556.           sphere { <0, 0, 2>, THICK }             
  557.      }
  558.      bounded_by {
  559.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  560.      }
  561.  
  562. }
  563.  
  564. #declare  font_c=
  565. union { 
  566.      object { toparc  translate <0, 0, (-2*ARATIO)> }
  567.      cylinder { <0, 0, 0.5> <0, 0, (0.5+GAP)>, THICK }
  568.      object { botarc }
  569.      sphere { <1, 0, (0.5+GAP)>, THICK }
  570.      sphere { <1, 0, 0.5>, THICK }
  571.      bounded_by {
  572.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  573.      }
  574. }
  575.                 
  576. #declare  font_d=
  577. union { 
  578.      object { toparc  translate <0, 0, (-2*ARATIO)> }
  579.      object { botarc }
  580.      cylinder { <0, 0, 0.5> <0, 0, (0.5+GAP)>, THICK }
  581.      union {                                      
  582.           cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  583.           sphere { <0, 0, 0>, THICK }
  584.           sphere { <0, 0, 2>, THICK }             
  585.           translate <1, 0, 0> 
  586.      }
  587.      bounded_by {
  588.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  589.      }
  590.  
  591. }
  592.  
  593. #declare  font_e=
  594. union { 
  595.      object { toparc  translate <0, 0, (-2*ARATIO)> }
  596.      cylinder { <0, 0, 0.5> <0, 0, (0.5+GAP)>, THICK } 
  597.      object { botarc }
  598.      sphere { <1, 0, (0.5+GAP)>, THICK }
  599.      cylinder { <0, 0, (0.5+GAP)> <1, 0, (0.5+GAP)>, THICK }
  600.      sphere { <1, 0, 0.5>, THICK }
  601.      bounded_by {
  602.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  603.      }
  604.  
  605. }
  606.  
  607. #declare  font_f=
  608. union { 
  609.      sphere { <.5, 0, 0>, THICK }
  610.      cylinder { <.5, 0, 0>  <.5, 0, 1.5>, THICK }
  611.      object { upperleftquarter  translate <0.5, 0, 0> }
  612.      sphere { <1, 0, 2>, THICK }
  613.      cylinder { <0.2, 0, 1> <0.8, 0, 1>, THICK }
  614.      sphere { <0.2, 0, 1>, THICK }
  615.      sphere { <0.8, 0, 1>, THICK }
  616.      bounded_by {
  617.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  618.      }
  619.  
  620. }                 
  621.  
  622. #declare  font_g=
  623. union { 
  624.      object { toparc  translate <0, 0, (-2*ARATIO)> }
  625.      object { botarc }
  626.      cylinder { <0, 0, 0.5> <0, 0, (0.5+GAP)>, THICK }
  627.      cylinder { <1, 0, (2*RATIO)>  <1, 0, (0-GAP)>, THICK }
  628.      object { botarc  translate <0, 0, (-0.5-GAP)> } 
  629.      sphere { <1, 0, (2*RATIO)>, THICK }
  630.      sphere { <0, 0, (0-GAP)>, THICK }
  631.      bounded_by {
  632.           box { <-BOUND,-BOUND,-1-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  633.      }
  634.  
  635. }
  636.  
  637. #declare  font_h=
  638. union { 
  639.      object { toparc  translate <0, 0, (-2*ARATIO)> }
  640.      union {                                      
  641.           cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  642.           sphere { <0, 0, 0>, THICK }
  643.           sphere { <0, 0, 2>, THICK }             
  644.      }
  645.      cylinder { <1, 0, 0> <1, 0 ,(0.5+GAP)>, THICK } 
  646.      sphere { <1, 0, 0>, THICK }  
  647.      bounded_by {
  648.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  649.      }
  650.  
  651. }
  652.  
  653. #declare  font_i=
  654. union { 
  655.      union {                                      
  656.           cylinder { <0, 0, 0> <0, 0, 2*RATIO>, THICK }
  657.           sphere { <0, 0, 0>, THICK }
  658.           sphere { <0, 0, 2*RATIO>, THICK }             
  659.           translate <0.5, 0, 0> 
  660.      }
  661.      sphere { <0.5, 0, (2*RATIO+GAP+THICK)>, THICK }
  662.      bounded_by {
  663.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  664.      }
  665.  
  666. }
  667.  
  668. #declare  font_j=
  669. union { 
  670.      cylinder { <1, 0, (2*RATIO)> <1, 0, (0-GAP)>, THICK }
  671.      object { botarc  translate <0, 0, (-0.5-GAP)> } 
  672.      sphere { <1, 0, (2*RATIO)>, THICK } 
  673.      sphere { <0, 0, (0-GAP)>, THICK }
  674.      sphere { <1, 0, (2*RATIO+GAP+THICK)>, THICK } 
  675.      bounded_by {
  676.           box { <-BOUND,-BOUND,-1-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  677.      }
  678.  
  679. }
  680.  
  681. #declare  font_k=
  682. union { 
  683.      union {                                      
  684.           cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  685.           sphere { <0, 0, 0>, THICK }
  686.           sphere { <0, 0, 2>, THICK }             
  687.      }
  688.      cylinder { <0, 0, (0.6*RATIO)> <1, 0, (2*RATIO)>, THICK } 
  689.      cylinder { <0.4, 0, (0.6*RATIO+0.4*1.4*RATIO)> <1, 0, 0>, THICK }
  690.      sphere { <1, 0, 0>, THICK } 
  691.      sphere { <1, 0, (2*RATIO)>, THICK }
  692.      bounded_by {
  693.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  694.      }
  695.  
  696. }
  697.  
  698. #declare  font_l=
  699. union {                                      
  700.      cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  701.      sphere { <0, 0, 0>, THICK }
  702.      sphere { <0, 0, 2>, THICK }             
  703.      bounded_by {
  704.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  705.      }
  706.  
  707.      translate <0.5, 0, 0>
  708. }
  709.  
  710.  
  711. #declare  font_m=
  712. union { 
  713.      object {
  714.           torus { 0.25, THICK  translate <0.25, 0, (2*RATIO-0.25)> }
  715.           clipped_by { box { <-1, -1, (2*RATIO-0.25)> <1, 1, 3> } }
  716.      } 
  717.      object {
  718.           torus { 0.25, THICK  translate <0.25, 0, (2*RATIO-0.25)> }
  719.           clipped_by { box { <-1, -1, (2*RATIO-0.25)> <1, 1, 3> } }
  720.           translate <0.5, 0, 0> 
  721.      }          
  722.      union {                                      
  723.           cylinder { <0, 0, 0> <0, 0, 2*RATIO>, THICK }
  724.           sphere { <0, 0, 0>, THICK }
  725.           sphere { <0, 0, 2*RATIO>, THICK }             
  726.      }
  727.      cylinder { <0.5, 0, 0> <0.5, 0, (2*RATIO-0.25)>, THICK }
  728.      cylinder { <1.0, 0, 0> <1.0, 0, (2*RATIO-0.25)>, THICK }
  729.      sphere { <0.5, 0, 0>, THICK }
  730.      sphere { <1, 0, 0>, THICK }
  731.      bounded_by {
  732.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  733.      }
  734.  
  735. }
  736.  
  737.  
  738. #declare  font_n=
  739. union { 
  740.      object { toparc  translate <0, 0, (-2*ARATIO)> }
  741.      union {                                      
  742.           cylinder { <0, 0, 0> <0, 0, 2*RATIO>, THICK }
  743.           sphere { <0, 0, 0>, THICK }
  744.           sphere { <0, 0, 2*RATIO>, THICK }             
  745.      }
  746.      cylinder { <1, 0, 0> <1, 0, (0.5+GAP)>, THICK }
  747.      sphere { <1, 0, 0>, THICK } 
  748.      bounded_by {
  749.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  750.      }
  751.  
  752. }
  753.  
  754. #declare  font_o=
  755. union { 
  756.      object { toparc  translate <0, 0, (-2*ARATIO)> }
  757.      object { botarc }
  758.      cylinder { <0, 0, 0.5> <0, 0, (0.5+GAP)>, THICK }
  759.      cylinder { <1, 0, 0.5> <1, 0, (0.5+GAP)>, THICK }   
  760.      bounded_by {
  761.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  762.      }
  763.  
  764. }
  765.  
  766. #declare  font_p=
  767. union { 
  768.      object { toparc  translate <0, 0, (-2*ARATIO)> }
  769.      object { botarc }
  770.      cylinder { <1, 0, 0.5> <1, 0, (0.5+GAP)>, THICK }
  771.      cylinder { <0, 0, (2*RATIO)> <0, 0, (0-2*GAP)>, THICK }
  772.      sphere { <0, 0, (2*RATIO)>, THICK }
  773.      sphere { <0, 0, (0-2*GAP)>, THICK }
  774.      bounded_by {
  775.           box { <-BOUND,-BOUND,-1-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  776.      }
  777.  
  778. }
  779.  
  780. #declare  font_q=
  781. union {        
  782.      object { toparc  translate <0, 0, (-2*ARATIO)> }
  783.      object { botarc }
  784.      cylinder { <0, 0, 0.5> <0, 0, (0.5+GAP)>, THICK }
  785.      cylinder { <1, 0, (2*RATIO)> <1, 0, (0-2*GAP)>, THICK }
  786.      sphere { <1, 0, (2*RATIO)>, THICK }
  787.      sphere { <1, 0, (0-2*GAP)>, THICK }
  788.      bounded_by {
  789.           box { <-BOUND,-BOUND,-1-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  790.      }
  791.  
  792. }
  793.  
  794. #declare  font_r=
  795. union { 
  796.      object { toparc  translate <0, 0, (-2*ARATIO)> }
  797.      union {                                      
  798.           cylinder { <0, 0, 0> <0, 0, 2*RATIO>, THICK }
  799.           sphere { <0, 0, 0>, THICK }
  800.           sphere { <0, 0, 2*RATIO>, THICK }             
  801.      }              
  802.      sphere { <1, 0, (0.5+GAP)>, THICK }
  803.      bounded_by {
  804.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  805.      }
  806.  
  807. }
  808.  
  809. #declare  font_s=
  810. union { 
  811.   object {
  812.      torus { (RATIO/2), THICK  translate <(RATIO/2), 0, (1.5*RATIO)> }
  813.      clipped_by { box { <-1, -1, (RATIO-THICK)> <(RATIO/2), 1, 3> } }
  814.   } 
  815.   object {
  816.      torus { (RATIO/2), THICK  translate <(1-RATIO/2), 0, (1.5*RATIO)> }
  817.      clipped_by { box { <(1-RATIO/2), -1, (1.5*RATIO)> <2, 1, 3> } }
  818.   } 
  819.   object {
  820.      torus { (RATIO/2), THICK  translate <(RATIO/2), 0, (.5*RATIO)> }
  821.      clipped_by { box { <-1, -1, (.5*RATIO)> <(RATIO/2), 1, -1> } }
  822.   }
  823.   object {
  824.      torus { (RATIO/2), THICK  translate <(1-RATIO/2), 0, (.5*RATIO)> }
  825.      clipped_by { box  { <(1-RATIO/2), -1, (RATIO+THICK)> <2, 1, -1> } }
  826.   } 
  827.   cylinder { <(RATIO/2), 0, 0> <(1-RATIO/2), 0, 0>, THICK } 
  828.   cylinder { <(RATIO/2), 0, (RATIO)> <(1-RATIO/2), 0, (RATIO)>, THICK } 
  829.   cylinder { <(RATIO/2), 0, (2*RATIO)> <(1-RATIO/2), 0, (2*RATIO)>, THICK } 
  830.   sphere { <0, 0, (RATIO/2)>, THICK }
  831.   sphere { <1, 0, (1.5*RATIO)>, THICK }
  832.      bounded_by {
  833.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  834.      }
  835.  
  836. }
  837.  
  838. #declare  font_t=
  839. union { 
  840.      union {                                      
  841.           cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  842.           sphere { <0, 0, 0>, THICK }
  843.           sphere { <0, 0, 2>, THICK }             
  844.           translate <0.5, 0, 0> 
  845.      }
  846.      cylinder { <0.2, 0, (2*RATIO)> <0.8, 0, (2*RATIO)>, THICK }
  847.      sphere { <0.2, 0, (2*RATIO)>, THICK }
  848.      sphere { <0.8, 0, (2*RATIO)>, THICK }
  849.      bounded_by {
  850.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  851.      }
  852.  
  853. }
  854.  
  855. #declare  font_u=
  856. union { 
  857.      object {
  858.           torus { (RATIO/2), THICK  translate <(RATIO/2), 0, (.5*RATIO)> }
  859.           clipped_by { box { <-1, -1, (.5*RATIO)> <(RATIO/2), 1, -1> } }
  860.      } 
  861.      object {
  862.           torus { (RATIO/2), THICK  translate <(1-RATIO/2), 0, (.5*RATIO)> }
  863.           clipped_by { box { <(1-RATIO/2), -1, (.5*RATIO)> <2, 1, -1> } }
  864.      }  
  865.      cylinder { <(RATIO/2), 0, 0> <(1-RATIO/2), 0, 0>, THICK }  
  866.      cylinder { <0, 0, (RATIO/2)> <0, 0, (2*RATIO)>, THICK }
  867.      union {                                      
  868.           cylinder { <0, 0, 0> <0, 0, 2*RATIO>, THICK }
  869.           sphere { <0, 0, 0>, THICK }
  870.           sphere { <0, 0, 2*RATIO>, THICK }             
  871.           translate <1, 0, 0>  
  872.      }
  873.      sphere { <0, 0, (2*RATIO)>, THICK }
  874.      bounded_by {
  875.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  876.      }
  877.  
  878. }
  879.  
  880. #declare  font_v=
  881. union { 
  882.      cylinder { <0, 0, (2*RATIO)> <0.5, 0, 0>, THICK }  
  883.      cylinder { <1, 0, (2*RATIO)> <0.5, 0, 0>, THICK } 
  884.      sphere { <1, 0, (2*RATIO)>, THICK }
  885.      sphere { <0, 0, (2*RATIO)>, THICK }
  886.      sphere { <0.5, 0, 0> , THICK }
  887.      bounded_by {
  888.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  889.      }
  890.  
  891. }
  892.  
  893. #declare  font_w=
  894. union { 
  895.      sphere { <0, 0, (2*RATIO)>, THICK }
  896.      cylinder { <0, 0, (2*RATIO)> <0.25, 0, 0>, THICK }
  897.      sphere { <0.25, 0, 0>, THICK }
  898.      cylinder { <0.5, 0, (2*RATIO)> <0.25, 0, 0>, THICK }
  899.      sphere { <0.5, 0, (2*RATIO)>, THICK }
  900.      cylinder { <0.5, 0, (2*RATIO)> <0.75, 0, 0>, THICK }
  901.      sphere { <0.75, 0, 0>, THICK }
  902.      cylinder { <1, 0, (2*RATIO)> <0.75, 0, 0>, THICK } 
  903.      sphere { <1, 0, (2*RATIO)>, THICK }
  904.      bounded_by {
  905.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  906.      }
  907.  
  908. }
  909.  
  910. #declare  font_x=
  911. union { 
  912.      cylinder { <0, 0, (2*RATIO)> <1, 0, 0>, THICK } 
  913.      cylinder { <0, 0, 0> <1, 0, (2*RATIO)>, THICK }
  914.      sphere { <0, 0, 0>, THICK } 
  915.      sphere { <0, 0, (2*RATIO)>, THICK }
  916.      sphere { <1, 0, 0>, THICK } 
  917.      sphere { <1, 0, (2*RATIO)>, THICK }
  918.      bounded_by {
  919.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  920.      }
  921.  
  922. }
  923.  
  924. #declare  font_y=
  925. union { 
  926.      object { botarc }
  927.      cylinder { <0, 0, 0.5> <0, 0, (2*RATIO)>, THICK }  
  928.      cylinder { <1, 0, (2*RATIO)> <1, 0, (0-GAP)>, THICK } 
  929.      object { botarc  translate <0, 0, (-0.5-GAP)> } 
  930.      sphere { <0, 0, (2*RATIO)>, THICK }
  931.      sphere { <1, 0, (2*RATIO)>, THICK }
  932.      sphere { <0, 0, (0-GAP)>, THICK }
  933.      bounded_by {
  934.           box { <-BOUND,-BOUND,-1-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  935.      }
  936.  
  937. }
  938.                 
  939. #declare  font_z=
  940. union { 
  941.      cylinder { <0, 0, (2*RATIO)> <1, 0, (2*RATIO)>, THICK }
  942.      cylinder { <1, 0, (2*RATIO)> <0, 0, 0 >, THICK }
  943.      cylinder { <0, 0, 0> <1, 0, 0>, THICK } 
  944.      sphere { <0, 0, (2*RATIO)>, THICK }
  945.      sphere { <1, 0, (2*RATIO)>, THICK }
  946.      sphere { <0, 0, 0>, THICK }
  947.      sphere { <1, 0, 0>, THICK } 
  948.      bounded_by {
  949.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  950.      }
  951.  
  952. }
  953.  
  954. /* Number definitions */
  955.  
  956. #declare  font_0=
  957. union { 
  958.      object { toparc }
  959.      cylinder { <0, 0, 0.5> <0, 0, 1.5>, THICK } 
  960.      object { botarc }
  961.      cylinder { <1, 0, 0.5> <1, 0, 1.5>, THICK } 
  962.      cylinder { <0, 0, 0> <1, 0 ,2 >, THICK }
  963.      sphere { <1, 0, 2>, THICK }
  964.      sphere { <0, 0, 0>, THICK }
  965.      bounded_by {
  966.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  967.      }
  968.  
  969. }
  970.  
  971. #declare  font_1=
  972. union { 
  973.      union {                                      
  974.           cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  975.           sphere { <0, 0, 0>, THICK }
  976.           sphere { <0, 0, 2>, THICK }             
  977.           translate <0.5, 0, 0> 
  978.      }
  979.      cylinder { < 0.5, 0, 2> <0.3, 0, 1.7>, THICK }
  980.      sphere { <0.3, 0, 1.8>, THICK }
  981.      bounded_by {
  982.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  983.      }
  984.  
  985. }
  986.  
  987. #declare  font_2=
  988. union {        
  989.      sphere { <0, 0, 1.5>, THICK }
  990.      object { toparc }
  991.      union {                                      
  992.           cylinder { <0, 0, 0> <0, 0, 0.125>, THICK }
  993.           sphere { <0, 0, 0>, THICK }
  994.           sphere { <0, 0, 0.125>, THICK }             
  995.           translate <1, 0, 1.375>
  996.      }
  997.      object { lowerquarter translate <0, 0, 0.875> }
  998.      object { upperleftquarter  translate <0, 0, -1.125> }
  999.      union {                                      
  1000.           cylinder { <0, 0, 0> <0, 0, 0.375>, THICK }
  1001.           sphere { <0, 0, 0>, THICK }
  1002.           sphere { <0, 0, 0.375>, THICK }             
  1003.      }
  1004.      cylinder { <0, 0, 0> <1, 0, 0>, THICK } 
  1005.      sphere { <1, 0, 0>, THICK } 
  1006.      bounded_by {
  1007.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1008.      }
  1009.  
  1010. }
  1011.  
  1012. #declare  font_3=
  1013. union { 
  1014.      object { upperarc }
  1015.      object { lowerarc }
  1016.      object { toparc }
  1017.      object { botarc }
  1018.      sphere { <0, 0, 1.5>, THICK }
  1019.      sphere { <0, 0, 0.5>, THICK }
  1020.      sphere { <0.5, 0, 1>, THICK }
  1021.      bounded_by {
  1022.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1023.      }
  1024.  
  1025. }
  1026.  
  1027. #declare  font_4=
  1028. union { 
  1029.      union {                                      
  1030.           cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  1031.           sphere { <0, 0, 0>, THICK }  
  1032.           sphere { <0, 0, 2>, THICK }             
  1033.           translate <0.8, 0, 0> 
  1034.      }
  1035.      cylinder { <0.8, 0, 2> <0, 0, .7>, THICK }
  1036.      sphere { <0, 0, 0.7>, THICK }
  1037.      cylinder { <0, 0, 0.7> <1, 0, 0.7>, THICK }
  1038.      sphere { <1, 0, 0.7>, THICK }
  1039.      bounded_by {
  1040.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1041.      }
  1042.  
  1043. }
  1044.  
  1045. #declare  font_5=
  1046. union { 
  1047.      object { botarc }
  1048.      sphere { <0, 0, 0.5>, THICK }
  1049.      cylinder { <1, 0, 0.5> <1, 0, 1>, THICK }
  1050.      object { toparc scale <1, 1, .75> translate <0, 0, -0.125> }
  1051.      sphere { <0, 0, 0>, THICK scale <1, 1, 0.75> translate <0, 0, 1> }
  1052.      cylinder { <0, 0, 1> <0, 0, 2>, THICK }
  1053.      sphere { <0, 0, 2>, THICK }
  1054.      sphere { <1, 0 2>, THICK }
  1055.      cylinder { <0, 0, 2> <1, 0, 2>, THICK }
  1056.      bounded_by {
  1057.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1058.      }
  1059.  
  1060. }  
  1061.  
  1062. #declare  font_6=
  1063. union { 
  1064.      object { toparc }
  1065.      object { botarc }
  1066.      object { toparc translate <0, 0, -0.875> }
  1067.      cylinder { <1, 0, 0.5> <1, 0, 0.625>, THICK }
  1068.      cylinder { <0, 0, 0.5> <0, 0, 1.5>, THICK }
  1069.      sphere { <1, 0, 1.5>, THICK }
  1070.      bounded_by {
  1071.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1072.      }
  1073.  
  1074. }
  1075.  
  1076. #declare  font_7=
  1077. union { 
  1078.      sphere { <0, 0, 2>, THICK }
  1079.      cylinder { <0, 0, 2> <1, 0, 2>, THICK } 
  1080.      sphere { <1, 0, 2>, THICK } 
  1081.      cylinder { <1, 0, 2> <0.25, 0, 0>, THICK } 
  1082.      sphere { <0.25, 0, 0> , THICK } 
  1083. }
  1084.  
  1085. #declare  font_8=
  1086. union { 
  1087.      object { toparc }
  1088.      object { toparc translate <0, 0, -1> }
  1089.      object { botarc }
  1090.      object { botarc translate <0 0 1> }
  1091.      bounded_by {
  1092.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1093.      }
  1094.  
  1095. }
  1096.  
  1097. #declare  font_9=
  1098. union { 
  1099.      object { toparc }
  1100.      object { botarc }
  1101.      object { botarc translate <0, 0, 0.875> }
  1102.      cylinder { <1, 0, 1.5> <1, 0, 0.5>, THICK }
  1103.      cylinder { <0, 0, 1.5> <0, 0, 1.375>, THICK }
  1104.      sphere { <0, 0, 0.5>, THICK } 
  1105.      bounded_by {
  1106.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1107.      }
  1108.  
  1109. }
  1110.  
  1111. /* Some more keyboard chars, with some other stuff. */
  1112.  
  1113. #declare  font_angstrom=
  1114. union { 
  1115.      cylinder { <0, 0, 0> <0.5, 0, 2>, THICK }
  1116.      cylinder { <1, 0, 0> <0.5, 0, 2>, THICK }
  1117.      cylinder { <(0.5-0.5*0.5), 0, 0.7> <(0.5+0.5*0.5), 0, 0.7>, THICK }
  1118.      sphere { <0, 0, 0>, THICK }
  1119.      sphere { <1, 0, 0>, THICK }
  1120.      torus { 0.25, (THICK/2) translate <0.5, 0, 2.2> } 
  1121.      bounded_by {
  1122.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2.5+BOUND> }
  1123.      }
  1124.  
  1125. }
  1126.  
  1127. #declare font_apostrophe=
  1128. union {                                      
  1129.      cylinder { <0, 0, 0> <0, 0, 0.5>, THICK }
  1130.      sphere { <0, 0, 0>, THICK }
  1131.      sphere { <0, 0, 0.5>, THICK }             
  1132.      bounded_by {
  1133.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1134.      }
  1135.      rotate <0,30,0> 
  1136.      translate <1, 0, 1.2> 
  1137. }
  1138.  
  1139. #declare font_quote=
  1140. union {                                      
  1141.      union {
  1142.           cylinder { <0, 0, 0> <0, 0, 0.5>, THICK }
  1143.           sphere { <0, 0, 0>, THICK }
  1144.           sphere { <0, 0, 0.5>, THICK }             
  1145.           translate <-0.2, 0, 1.5> 
  1146.      }
  1147.      union {                                      
  1148.           cylinder { <0, 0, 0> <0, 0, 0.5>, THICK }
  1149.           sphere { <0, 0, 0>, THICK }
  1150.           sphere { <0, 0, 0.5>, THICK }             
  1151.           translate <0.2, 0, 1.5> 
  1152.      }
  1153.      bounded_by {
  1154.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1155.      }
  1156.  
  1157. }
  1158.  
  1159. #declare  font_exclamation=
  1160. union { 
  1161.      sphere { <0.5, 0, 0>, THICK } 
  1162.      union {                                      
  1163.           cylinder { <0, 0, 0> <0, 0, 1.5>, THICK }
  1164.           sphere { <0, 0, 0>, THICK }
  1165.           sphere { <0, 0, 1.5>, THICK }             
  1166.           translate <0.5, 0, 0.5>
  1167.      }
  1168.      bounded_by {
  1169.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1170.      }
  1171.  
  1172. }
  1173.  
  1174. #declare  font_pound=
  1175. union { 
  1176.      union {                                      
  1177.           cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  1178.           sphere { <0, 0, 0>, THICK }
  1179.           sphere { <0, 0, 2>, THICK }             
  1180.           translate <0.25, 0, 0>
  1181.      }
  1182.      union {                                      
  1183.           cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  1184.           sphere { <0, 0, 0>, THICK }
  1185.           sphere { <0, 0, 2>, THICK }             
  1186.           translate <0.75, 0, 0>
  1187.      }
  1188.      cylinder { <0, 0, 0.667> <1, 0, 0.667>, THICK }
  1189.      cylinder { <0, 0, 1.333> <1, 0, 1.333>, THICK }
  1190.      sphere { <0, 0, 0.667>, THICK }
  1191.      sphere { <1, 0, 0.667>, THICK }
  1192.      sphere { <0, 0, 1.333>, THICK }
  1193.      sphere { <1, 0, 1.333>, THICK }
  1194.      bounded_by {
  1195.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1196.      }
  1197.  
  1198. }
  1199.  
  1200. #declare  font_dollar=
  1201. union { 
  1202.      object {
  1203.           torus { (RATIO/2), THICK  translate <(RATIO/2), 0, (1.5*RATIO)> }
  1204.           clipped_by { box { <-1, -1, (RATIO-THICK)> <(RATIO/2), 1, 3> } }
  1205.           translate <0, 0, (ARATIO)>
  1206.      }                   
  1207.      object {
  1208.           torus { (RATIO/2), THICK  translate <(1-RATIO/2), 0, (1.5*RATIO)> }
  1209.           clipped_by { box { <(1-RATIO/2), -1, (1.5*RATIO)> <2, 1, 3> } }
  1210.           translate <0, 0, (ARATIO)>
  1211.      }
  1212.      object {
  1213.           torus { (RATIO/2), THICK  translate <(RATIO/2), 0, (.5*RATIO)> }
  1214.           clipped_by { box { <-1, -1, (.5*RATIO)> <(RATIO/2), 1, -1> } }
  1215.           translate <0, 0, (ARATIO)>
  1216.      }
  1217.      object {
  1218.           torus { (RATIO/2), THICK  translate <(1-RATIO/2), 0, (.5*RATIO)> }
  1219.           clipped_by { box { <(1-RATIO/2), -1, (RATIO+THICK)> <2, 1, -1> } }
  1220.           translate <0, 0, (ARATIO)>
  1221.      }
  1222.      cylinder { <(RATIO/2), 0, (ARATIO)> <(1-RATIO/2), 0, (ARATIO)>, THICK } 
  1223.      cylinder { <(RATIO/2), 0, 1> <(1-RATIO/2), 0, 1>, THICK }
  1224.      cylinder { <(RATIO/2), 0, (1+RATIO)> <(1-RATIO/2), 0, (1+RATIO)>, THICK } 
  1225.      sphere { <0, 0, (RATIO/2+ARATIO)>, THICK } 
  1226.      sphere { <1, 0, (1+0.5*RATIO)>, THICK }
  1227.      union {                                      
  1228.           cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  1229.           sphere { <0, 0, 0>, THICK }
  1230.           sphere { <0, 0, 2>, THICK }             
  1231.      translate <0.333, 0, 0> 
  1232.      }
  1233.      union {                                      
  1234.           cylinder { <0, 0, 0> <0, 0, 2>, THICK }
  1235.           sphere { <0, 0, 0>, THICK }
  1236.           sphere { <0, 0, 2>, THICK }             
  1237.           translate <0.667, 0 ,0> 
  1238.      }          
  1239.      bounded_by {
  1240.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1241.      }
  1242.      
  1243. }
  1244.  
  1245. #declare  font_up=
  1246. union { 
  1247.      cylinder { <.5, 0, 2> <0, 0, 1>, THICK }
  1248.      cylinder { <.5, 0, 2> <1, 0, 1>, THICK }
  1249.      sphere { <0.5, 0, 2>, THICK }
  1250.      sphere { <0, 0, 1>, THICK }
  1251.      sphere { <1, 0, 1>, THICK }
  1252.      bounded_by {
  1253.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1254.      }
  1255.  
  1256. }
  1257.  
  1258. #declare  font_slash=
  1259. union { 
  1260.      cylinder { <0, 0, 0> <1, 0, 2>, THICK }
  1261.      sphere { <0, 0, 0>, THICK }
  1262.      sphere { <1, 0, 2>, THICK } 
  1263.      bounded_by {
  1264.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1265.      }
  1266.  
  1267. }
  1268.  
  1269. #declare  font_backslash=
  1270. union { 
  1271.      cylinder { <1, 0, 0> <0, 0, 2>, THICK } 
  1272.      sphere { <1, 0, 0>, THICK } 
  1273.      sphere { <0, 0, 2>, THICK }
  1274.      bounded_by {
  1275.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1276.      }
  1277.  
  1278. }
  1279.  
  1280. #declare  font_percent=
  1281. union { 
  1282.      torus { 0.25, THICK translate <0.25, 0, 1.75> } 
  1283.      torus { 0.25, THICK translate <0.75, 0, 0.25> }
  1284.      cylinder { <0, 0, 0> <1, 0, 2>, THICK }
  1285.      sphere { <0, 0, 0>, THICK }
  1286.      sphere { <1, 0, 2>, THICK }
  1287.      bounded_by {
  1288.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1289.      }
  1290.  
  1291. }
  1292.  
  1293. #declare  font_star=
  1294. union { 
  1295.      cylinder { <.2, 0, .4> <.8, 0, 1.6>, THICK }
  1296.      cylinder { <.2, 0, 1.6> <.8, 0, .4>, THICK }
  1297.      cylinder { <0, 0, 1> <1, 0, 1>, THICK }
  1298.      sphere { <.2, 0, .4>, THICK }
  1299.      sphere { <.8, 0, .4>, THICK }
  1300.      sphere { <1, 0, 1>, THICK }
  1301.      sphere { <.8, 0, 1.6>, THICK }
  1302.      sphere { <.2, 0, 1.6>, THICK }
  1303.      sphere { <0, 0, 1>, THICK }
  1304.      bounded_by {
  1305.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1306.      }
  1307.  
  1308. }
  1309.  
  1310. #declare  font_leftp=
  1311. union { 
  1312.      object {
  1313.           torus { 0.5, THICK translate <0.5, 0, 1.5> } 
  1314.           clipped_by { box { <-1, -1, 1.5> <.5, 1, 3> } } 
  1315.      }
  1316.      object {
  1317.           torus { 0.5, THICK translate <0.5, 0, .5> }    
  1318.           clipped_by { box { <-1, -1, -1> <0.5, 1, .5> } }
  1319.      }
  1320.      cylinder { <0, 0, 0.5> <0, 0, 1.5>, THICK } 
  1321.      sphere { <0.5, 0, 0>, THICK } 
  1322.      sphere { <0.5, 0, 2>, THICK }
  1323.      bounded_by {
  1324.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1325.      }
  1326.  
  1327. }
  1328.  
  1329. #declare  font_rightp=
  1330. union { 
  1331.      object {
  1332.           torus { 0.5, THICK translate <0.5, 0, 1.5> } 
  1333.           clipped_by { box { <0.5, -1, 1.5> <2, 1, 3> } }
  1334.      }
  1335.      object {
  1336.           torus { 0.5, THICK translate <0.5, 0, .5> } 
  1337.           clipped_by { box { <0.5, -1, -1> <2, 1, 0.5> } } 
  1338.      }
  1339.      cylinder { <1, 0, 0.5> <1, 0, 1.5>, THICK } 
  1340.      sphere { <0.5, 0, 0>, THICK } 
  1341.      sphere { <0.5, 0, 2>, THICK }
  1342.      bounded_by {
  1343.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1344.      }
  1345.  
  1346. }
  1347.  
  1348. #declare  font_plus=
  1349. union { 
  1350.      union {                                      
  1351.           cylinder { <0, 0, 0> <0, 0, 1>, THICK }
  1352.           sphere { <0, 0, 0>, THICK }
  1353.           sphere { <0, 0, 1>, THICK }             
  1354.           translate <0.5, 0, 0.5>
  1355.      }
  1356.      cylinder { <0, 0, 1> <1, 0, 1>, THICK }
  1357.      sphere { <0, 0, 1>, THICK }
  1358.      sphere { <1, 0, 1>, THICK }
  1359.      bounded_by {
  1360.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1361.      }
  1362.  
  1363. }
  1364.  
  1365. #declare  font_minus=
  1366. union { 
  1367.      cylinder { <0, 0, 1> <1, 0, 1>, THICK }
  1368.      sphere { <0, 0, 1>, THICK } 
  1369.      sphere { <1, 0, 1>, THICK }
  1370.      bounded_by {
  1371.           box { <-BOUND,-BOUND,-BOUND> <1+BOUND, BOUND, 2+BOUND> }
  1372.      }
  1373.  
  1374. }
  1375.